package br.com.aquinoevasconcelos.control;

import java.util.List;

import br.com.aquinoevasconcelos.excecao.EmailException;
import br.com.aquinoevasconcelos.excecao.ValidacaoException;
import br.com.aquinoevasconcelos.modelos.Contato;
import br.com.aquinoevasconcelos.repositorio.IRepositorioContato;
import br.com.aquinoevasconcelos.repositorio.RepositorioContato;
import br.com.aquinoevasconcelos.util.SendMail;
import br.com.aquinoevasconcelos.util.Validacao;

/**
 * @author Paulo Roberto
 * @email paulolima2008@hotmail.com
 * @version 1.0 @ Propriedade da Techcode
 */

public class ControladorContato {

	private IRepositorioContato contatos;
	private Contato contato = new Contato();

	// construtor da classe
	public ControladorContato(IRepositorioContato contatos) {
		this.contatos = contatos;

	}

	// ----------------------------------------------------------------------------
	public void inserirContato(Contato contato) throws ValidacaoException {

		// Data e hora do sistema
		contato.setDatahora(new Validacao().eventoDataHora());
		// validacao do nome
		// -----------------------------------------------------------------------
		if (new Validacao().campoVazio(contato.getNome()) == true
				|| new Validacao().campoTemNumero(contato.getNome()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						contato.getNome(), 100) == true) {
			throw new ValidacaoException();
		}
		// -----------------------------------------------------------------------

		// validacao do email
		// -----------------------------------------------------------------------
		else if (new Validacao().validarEmail(contato.getEmail()) == true
				|| new Validacao().campoVazio(contato.getEmail()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						contato.getEmail(), 100) == true) {
			throw new ValidacaoException();
		}
		// validacao do assunto
		// ----------------------------------------------------------------------
		else if (new Validacao().campoVazio(contato.getAssunto()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						contato.getAssunto(), 100) == true) {
			throw new ValidacaoException();
		}
		// validacao da descricao
		// ----------------------------------------------------------------------
		else if (new Validacao().campoVazio(contato.getDescricao()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						contato.getDescricao(), 10000)) {
			throw new ValidacaoException();
		}
		// ----------------------------------------------------------------------

		// se tudo estive ok entao executar a acao abaixo
		// ---------------------------------------------------------------------
		else {

			contatos.inserirContato(contato);
		}
		// --------------------------------------------------------------------
	}

	// ------------------------------------------------------------------------
	public void removerContato(Contato contato) {
		contatos.removerContato(contato);
	}

	// ------------------------------------------------------------------------
	public List<Contato> listaContato() {
		return contatos.listaContato();
	}

	// -----------------------------------------------------------------------
	public List<Contato> pesquisarContato(String query) {
		return contatos.pesquisaContato(query);
	}

	public void RespostaContato(String nome, String titulo, String mensagem,
			String msgResposta, String emailDestinatario) throws EmailException {

		System.out.println("email destino "+emailDestinatario);
		SendMail sm = new SendMail();

		String resposta = "Sr(a).: "
				+ nome
				+ "\n\nRecebemos o seu Formulário com a seguinte Titulo: "
				+ titulo
				+ "\nMensagem:\n"
				+ mensagem
				+ "\nSeguir a análise dos nossos consultores\n"
				+ msgResposta
				+ "\n\nDesde ja todos da Aquino&Vasconcelos Agradecemos pela sua Colaboração.";

		sm.sendMail("tech.code.projetos@gmail.com", emailDestinatario,
				"Aquino&Vasconcelos-Consultoria", resposta);

	}
	
	public Contato editarContato(long id){
		
		contatos = new RepositorioContato();
		
		contato = null;
		
		contato = contatos.pesquisaContato("FROM contato WHERE id = '"+id+"'").get(0);
		
		return contato;
		
		
	}
}
